package com.lancoo.znbkxx.teacher.aibkTestCoach.networkRequest.remote

import com.lancoo.znbkxx.teacher.aibkTestCoach.networkRequest.entity.*
import io.reactivex.Single
import okhttp3.RequestBody
import retrofit2.http.*

/**
 * Created by Dadong on 2020/7/7
 * Describe: 评阅有关接口
 */
interface MarkService {

    /*
   * 中高考：获取试卷预览(答题卡+试题详情)
   * */
    @Headers("urlName:base")
    @GET("api/Paper/GetPaperInfo")
    fun getPaperPreviewInfor(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<PaperPreviewInfor>>

    /*
      * 获取试卷讲评(答题卡+整体详情)
      * */
    @Headers("urlName:base")
    @GET("api/Achievement/GetPaperComment")
    fun getPaperEvaluationInfor(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<PaperEvaluationInfor>>

    /*
  * 获取试卷讲评(单题详情)
  * */
    @Headers("urlName:base")
    @GET("api/Achievement/GetQuesComment")
    fun getQuesEvaluationDeatil(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<QuesEvaluationDetail>>


    /*
    * 获取某个学生试卷分析
    * */
    @Headers("urlName:base")
    @GET("api/Achievement/GetStudentPaperAnalysis")
    fun getPaperAnalysisInfor(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<PaperPerAnalysisInfor>>

    /*
    * 获取当前学生认知等级
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetCognitiveGrade")
    fun getCognitiveGrade(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<PaperAnalysisDiagnosisInfor>>


    /*
  * 获取纠错类型
  * */
    @Headers("urlName:base")
    @GET("api/QuesError/GetErrorConfig")
    fun getErrorConfig(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<List<ErrorRecovery>>>

    /*
    * 提交纠错信息
    * */
    @Headers("urlName:base")
    @POST("api/QuesError/AddQuesErrorCorrection")
    fun addQuesErrorCorrection(@Query("Token")token:String,@Query("UserID")userId:String,@Body postBody: RequestBody): Single<BaseData<String>>

    /*
    * 导出讲评信息
    * */
    @Headers("urlName:base")
    @GET("api/Paper/ExportComment")
    fun exportComment(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<String>>

    /******************************************************************/
    /*
    * 组卷主页面获取试卷名称与PaperID
    * */
    @Headers("urlName:oneOnOne")
    @GET("api/PaperInfo/GetPaperInit")
    fun getPaperInit(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<TempletPaperInit>>

    /*
    * 获取试卷生词率等级配置信息
    * */
    @Headers("urlName:oneOnOne")
    @GET("api/PaperInfo/GetExceedList")
    fun getExceedList(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<TempletExceedList>>

    /*
    * 获取语法专项的专题列表
    * */
    @Headers("urlName:oneOnOne")
    @POST("api/Gram/GetTopicList")
    fun getTopicList(@Query("Token")token:String,@Query("UserID")userId:String,@Body postBody: RequestBody): Single<BaseData<TempletGrammarSpecificListInfor>>

    /*
    * 获取专题的知识点信息（支持多个专题同时查询）
    * */
    @Headers("urlName:oneOnOne")
    @POST("api/Gram/GetTopicKlg")
    fun getTopicKlg(@Query("Token")token:String,@Query("UserID")userId:String,@Body postBody: RequestBody): Single<BaseData<TopicGrammarKlgInfor>>


    /*
    * 获取模板列表信息，用于模板管理
    * */
    @Headers("urlName:oneOnOne")
    @POST("api/Templet/GetTempletBriefList")
    fun getTempletBriefList(@Query("Token")token:String,@Query("UserID")userId:String,@Body postBody: RequestBody): Single<BaseData<TempletPaperListInfor>>


    /*
    * 获取模板管理的选中模板的题型信息
    * */
    @Headers("urlName:oneOnOne")
    @GET("api/Templet/GetTempletTypeList")
    fun getTempletTypeList(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<TemplateTypeListInfor>>

    /*
    * 获取自定义模板适用题型
    * */
    @Headers("urlName:oneOnOne")
    @POST("api/Templet/GetSelectedTypeList")
    fun getSelectedTypeList(@Query("Token")token:String,@Query("UserID")userId:String,@Body postBody: RequestBody): Single<BaseData<TempletSelectedTypeListInfor>>

    /*
    * 保存自定义模板
    * */
    @Headers("urlName:oneOnOne")
    @POST("api/Templet/SaveCustomizeTemplet")
    fun saveCustomizeTemplet(@Query("Token")token:String,@Query("UserID")userId:String,@Body postBody: RequestBody): Single<BaseData<String>>


    /*
    *删除自定义模板
     */
    @Headers("urlName:oneOnOne")
    @GET("api/Templet/DelCustomizeTemplet")
    fun delCustomizeTemplet(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<String>>

    /*
    * 发起组卷
    * */
    @Headers("urlName:oneOnOne")
    @GET(" api/MakePaper/StartSelected")
    fun startSelected(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<String>>

    /*
    * 获取组卷抽题进度
    * */
    @Headers("urlName:oneOnOne")
    @GET(" api/MakePaper/GetSelectedProgress")
    fun getSelectedProgress(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<String>>

    /*
    * 生成试卷（抽题结束后，调用接口，生成试卷结构信息）
    * */
    @Headers("urlName:oneOnOne")
    @GET(" api/MakePaper/GeneratePaper")
    fun generatePaper(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<String>>

    /*
    * 获取语言能力专项列表信息
    * */
    @Headers("urlName:oneOnOne")
    @GET(" api/Lang/GetAllAbilityBaseInfo")
    fun getAllAbilityBaseInfo(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<TempletLanguageSpecificListInfor>>

    /*
    * 获取语言能力知识点信息
    * */
    @Headers("urlName:oneOnOne")
    @POST("api/Lang/GetLangKlgList")
    fun getLangKlgList(@Query("Token")token:String,@Query("UserID")userId:String,@Body postBody: RequestBody): Single<BaseData<TopicLanguageKlgInfor>>


    /*
    * 获取组卷生成待审核试卷内容(非口语)
    * */
    @Headers("urlName:oneOnOne")
    @POST("api/PaperInfo/MobileReviewPaperInfo")
    fun getReviewPaperInfo_1v1(@Query("Token")token:String,@Query("UserID")userId:String,@Body postBody: RequestBody): Single<BaseData<TestPaperReviewInfor>>


    /*
    * 发布试卷
    * */
    @Headers("urlName:oneOnOne")
    @GET(" api/PaperInfo/PublishPaper")
    fun publishPaper(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<Boolean>>

    /*
    * 删除未发布的试卷
    * */
    @Headers("urlName:oneOnOne")
    @GET(" api/PaperInfo/DelPaper")
    fun delPaper(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<Boolean>>

    /*
    * (一对一）：试卷预览
    * */
    @Headers("urlName:oneOnOne")
    @POST(" api/PaperInfo/MobilePreviewPaperInfo")
    fun getPreviewPaperInfo_1v1(@Query("Token")token:String,@Query("UserID")userId:String,@Body postBody: RequestBody): Single<BaseData<PaperPreviewInfor>>

    /*
    *(一对一)查看个人成绩分析
    * */
    @Headers("urlName:oneOnOne")
    @GET("api/PaperAchievement/MobileGetPaperReportCard")
    fun getPaperAnalysisInfor_1v1(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<PaperPerAnalysisInfor>>

    /*
    * （一对一）获取普通替换试题
    * */
    @Headers("urlName:oneOnOne")
    @POST("api/MakePaper/ReplaceQues")
    fun getReplaceQuesInfo_1v1(@Query("Token")token:String,@Query("UserID")userId:String,@Body postBody: RequestBody): Single<BaseData<TestPaperReplaceQuesInfor>>

    /*
    * 保存替换的试题
    * */
    @Headers("urlName:oneOnOne")
    @GET("api/MakePaper/SaveReplacedQues")
    fun saveReplacedQues(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<Boolean>>

    /*
    * （一对一）获取主题知识点相关信息
    * */
    @Headers("urlName:oneOnOne")
    @GET("api/Resource/GetTypeThemeList")
    fun getTypeThemeList(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<TypeThemeInfor>>

    /*
    * 获取唯一码对应的数字化编码
    * */
    @Headers("urlName:sc")
    @GET("api/WordTrain/GetKlgCode")
    fun getKlgCode(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<String>>


    /*
    * 导出学生成绩
    * */
    @Headers("urlName:base")
    @GET("api/Paper/ExportPaperScore")
    fun exportPaperScore(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<String>>

    /*
    * 改变音频播放速度
    * */
    @Headers("urlName:base")
    @GET("api/Paper/AdjustAudioSpeed")
    fun adjustAudioSpeed(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<String>>

    /*
    * 是否开启班级认知诊断
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/IsOpenClassRZZD_App")
    fun getIsOpenClassRZZD_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<Boolean>>

    /*
    * 是否切换到个人认知诊断
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/IsChangeStu_App")
    fun getIsChangeStu_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<String>>

    /*
    * 获取班级知识点域
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetZsdArea_App")
    fun getZsdArea_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassKnowledgeAreaInfor>>

    /*
    * 获取班级预估成绩详情
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetClassTotalScore_App")
    fun getClassTotalScore_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassEstimateGradeInfor>>

    /*
    * 获取认知指数主页面详情
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetClassCognitiveIndex_App")
    fun getClassCognitiveIndex_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassCognitiveDiagnosisInfor>>

    /*
    * 班级学生成绩得分分布图弹窗
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetScoreDistre_App")
    fun getScoreDistre_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassStuGradeDistributionInfor>>

    /*
    * 总评成绩学生进步/退步人数弹窗
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetStuNum_App")
    fun getStuNum_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassStuNumUpDownInfor>>

    /*
    *班级认知指数区域分布表-弹窗||认知指数进步/退步人数—弹窗
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetRangeClassTableInfo_App")
    fun getRangeClassTableInfo_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassStuCognitiveDiagnosisInfor>>

    /*
    * 班级认知荣誉榜
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetCognitiveIndexHonorRank_App")
    fun getCognitiveIndexHonorRank_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassStuCognitiveHonorRollListInfor>>

    /*
    *词汇认知主页面
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetClassVocablary_App")
    fun getClassVocablary_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassVocablaryDiagnosisInfor>>

    /*
   * 词汇量区域分布表-弹窗
   * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetRangeClassVocabInfo_App")
    fun getRangeClassVocabInfo_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassVocabularyMasterDistribInfor>>

    /*
    *语法认知主页面
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetClassGrammar_App")
    fun getClassGrammar_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassGrammarDiagnosisInfor>>


    /*
   * 语法量区域分布表-弹窗
   * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetRangeClassGrammarInfo_App")
    fun getRangeClassGrammarInfo_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassGrammarMasterDistribInfor>>


    /*
    * 语言能力认知
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetLanguageForClass_App")
    fun getLanguageForClass_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassLanguageAbilityInfor>>

    /*
    * 语言能力认知情况弹窗
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetAbilityForClass_App")
    fun getAbilityForClass_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassStuLanguageAbilityInfor>>

    /*
    * 做题特点主界面
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetClassExerciseTrait_App")
    fun getClassExerciseTrait_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassAnswertraitInfor>>

    /*
    * 学习特点主界面
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetStudyFeatureForClass_App")
    fun getStudyFeatureForClass_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassStudyFeature>>

    /*
    * 移动端班级学习建议
    * */
    @Headers("urlName:rzzd")
    @GET("api/RZZD/GetClassStudyAdvice_App")
    fun getClassStudyAdvice_App(@QueryMap params: MutableMap<String, Any>):
            Single<BaseData<ClassStudyAdviceInfor>>
}